Demo: Manipulating Multiple Listbox Arrays

NL127 Home

Beginning Programming X

Multiple Listbox Arrays

Video Capture in LB

Images on Statictext

Bulk File Renamer

Dynamic Web Pages

Animated Titles

Financial Functions

::::::::::::::::::::::::::::::::::::::::::::::::::::

Submission Guildlines

Newsletter Help

Index

Manipulating multiple listbox arrays in a single sub is easier than you think. I devised this method when Liberty BASIC was still in version 1.4. when everything was done in gosubs. It was a simple proceedure to adapt it for use with subs or functions. Let's start with some code to preload our listbox arrays and some replacement info for the arrays...

Global replaceWord$
Dim array0$(25), array1$(25), array2$(25), array3$(25), array4$(25)

    For x=101 To 200
        If x=200 Then
            replaceWord$=replaceWord$+Str$(x)
        Else
            replaceWord$=replaceWord$+Str$(x)+","
        End If
    Next x

    For x=1 To 4
        For y=1 To 25
            Select Case x
                Case 1
                    array1$(y)=str$(y)
                Case 2
                    array2$(y)=str$((25*(x-1))+y)
                Case 3
                    array3$(y)=str$((25*(x-1))+y)
                Case 4
                    array4$(y)=str$((25*(x-1))+y)
            End Select
        Next y
    Next x

This fills

array1( ) with the values 1 thru 25,

array2( ) with the values 26 thru 50,

array3( ) with 51 thru 75,

array4( ) with 76 thru 100.

Now we need our listboxes and we will open the window.

WindowWidth=455
WindowHeight=400
    ListBox #main.list1, array1$(), swapArray,  10, 10, 100, 350
    ListBox #main.list2, array2$(), swapArray, 120, 10, 100, 350
    ListBox #main.list3, array3$(), swapArray, 230, 10, 100, 350
    ListBox #main.list4, array4$(), swapArray, 340, 10, 100, 350
Open "Array Window" For Window As #main
    Print #main.list1, "SingleClickSelect"
    Print #main.list2, "SingleClickSelect"
    Print #main.list3, "SingleClickSelect"
    Print #main.list4, "SingleClickSelect"
    Print #main, "TrapClose quit"

Wait

Next is our exit sub

Sub quit handle$
    Close #main
    End
End Sub

Finally our array handoff sub. Ahhhh I said handoff not handler. This is the secret to our array handling. What we are going to do is hand off our array's values to a neutral array, (by neutral I mean one that is not associated with a list box). Then we will process them in the neutral array and hand them back to the listbox array.

Sub swapArray handle$
    Select Case handle$
        Case "#main.list1"
            Print #main.list1, "SelectionIndex? index"
            setup=1
            For x=1 To 25
                array0$(x)=array1$(x)
            Next x
        Case "#main.list2"
            Print #main.list2, "SelectionIndex? index"
            setup=2
            For x=1 To 25
                array0$(x)=array2$(x)
            Next x
        Case "#main.list3"
            Print #main.list3, "SelectionIndex? index"
            setup=3
            For x=1 To 25
                array0$(x)=array3$(x)
            Next x
        Case "#main.list4"
            Print #main.list4, "SelectionIndex? index"
            setup=4
            For x=1 To 25
                array0$(x)=array4$(x)
            Next x
    End Select

    Call changeArrayValue setup, index

    Select Case handle$
        Case "#main.list1"
            For x=1 To 25
                array1$(x)=array0$(x)
            Next x
            Print #main.list1, "Reload"
            Print #main.list1, "Selectindex 0"
        Case "#main.list2"
            For x=1 To 25
                array2$(x)=array0$(x)
            Next x
            Print #main.list2, "Reload"
            Print #main.list2, "Selectindex 0"
        Case "#main.list3"
            For x=1 To 25
                array3$(x)=array0$(x)
            Next x
            Print #main.list3, "Reload"
            Print #main.list3, "Selectindex 0"
        Case "#main.list4"
            For x=1 To 25
                array4$(x)=array0$(x)
            Next x
            Print #main.list4, "Reload"
            Print #main.list4, "Selectindex 0"
    End Select
End Sub

Last but not least, (to show that this works), our array handler, (where changes are actually made). You will see that I pass setup, (which tells us which listbox has called the Sub), and index, (the item actually selected in the listbox).

Just for the fun of it, I am placing the original contents of the listbox into replaceWord$ where the replacement word is found. So that if you click the same item a second time the original contents will be placed back in the listbox.

Sub changeArrayValue s, i
    a$=array0$(i)
    array0$(i)=Word$(replaceWord$, ((s-1)*25)+i, ",")
    For x=1 To 100
        If x=((s-1)*25)+i Then
            newWord$=newWord$+","+a$
        Else
            newWord$=newWord$+","+Word$(replaceWord$, x, ",")
        End If
    Next x
    replaceWord$=Right$(newWord$, Len(newWord$)-1)
End Sub

Editor's Note: Visit [Liberty Forge Tips and Snips] to see more of Ken's useful snippets.


DEMO

The file array.bas is included in the zipped archive of this newsletter.


NL127 Home

Beginning Programming X

Multiple Listbox Arrays

Video Capture in LB

Images on Statictext

Bulk File Renamer

Dynamic Web Pages

Animated Titles

Financial Functions

::::::::::::::::::::::::::::::::::::::::::::::::::::

Submission Guildlines

Newsletter Help

Index